home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung 2 / Power-Programmierung CD 2 (Tewi)(1994).iso / c / library / bcfamily / source / kbdstatu.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1993-06-12  |  1.3 KB  |  51 lines

  1. //
  2. //      *******************************************************************
  3. //        JdeBP C++ Library Routines          General Public Licence v1.00
  4. //            Copyright (c) 1991,1992     Jonathan de Boyne Pollard
  5. //      *******************************************************************
  6. //
  7. // Part of FamAPI.LIB
  8. //
  9.  
  10. #include "famapi.h"
  11. #include "dosdos.h"
  12.  
  13. #pragma argsused
  14. //
  15. //    Change the keyboard status word
  16. //
  17. USHORT _APICALL
  18. KbdSetStatus ( KBDINFO far *PtrKbdInfo, unsigned short KbdHandle )
  19. {
  20.     if (PtrKbdInfo->cb != sizeof(*PtrKbdInfo))
  21.         return ERROR_KBD_INVALID_LENGTH ;
  22.  
  23.     if (PtrKbdInfo->fsMask & ~(0x04|0x01))
  24.         return ERROR_KBD_INVALID_INPUT_MASK ;
  25.  
  26.     //    It is a pity that we have to fudge the value in directly.
  27.     *(UCHAR far *)MK_FP(0x40, 0x17) = (UCHAR)PtrKbdInfo->fsState ;
  28.  
  29.     return NO_ERROR ;
  30. }
  31.  
  32. #pragma argsused
  33. //
  34. //    Obtain the keyboard status word
  35. //
  36. USHORT _APICALL
  37. KbdGetStatus ( KBDINFO far *PtrKbdInfo, unsigned short KbdHandle )
  38. {
  39.     if (PtrKbdInfo->cb != sizeof(*PtrKbdInfo))
  40.         return ERROR_KBD_INVALID_LENGTH ;
  41.  
  42.     PtrKbdInfo->fsMask = 0 ;            // Everything is turned off
  43.     PtrKbdInfo->chTurnAround = 0 ;        // Ignored in Family API
  44.     PtrKbdInfo->fsInterim = 0 ;            // All interim support turned off
  45.     _AH = 0x12 ;
  46.     geninterrupt(0x16) ;                // BIOS get shift state
  47.     PtrKbdInfo->fsState = _AX ;
  48.  
  49.     return NO_ERROR ;
  50. }
  51.